HJS

font-display 속성

1️⃣ font-display 란?

font-display@font-face 규칙 안에서 사용되며, 웹 폰트를 로딩할 때 텍스트를 어떻게 보여줄지를 브라우저에 지시하는 속성입니다.

@font-face {
  font-family: 'MyFont';
  src: url('myfont.woff2') format('woff2');
  font-display: swap;
}


2️⃣ 핵심 개념: block period & swap period

🔹 Block period (블록 기간)

폰트가 로드될 때가지 텍스트가 안 보이는(FOUT) 시간입니다. 이 시간 동안 브라우저는 웹 폰트를 기다립니다.

🔹 Swap period (스왑 기간)

블록 기간이 지나고 나면, 브라우저는 대체 폰트(fallback)를 사용합니다. 이후 웹 폰트가 도착하면 웹 폰트로 교체된니다.

즉, swap period는 대체 폰트를 쓰다가 웹 폰트로 "스왑"할 수 있는 시간입니다.



3️⃣ 각 font-display 값 자세히 보기

🔹 font-display: auto

block period보통 최대 3초
swap period최대 수집 초까지 가능(브라우저에 따라 다름)

🔹font-display: block

block period최대 3초
swap period폰트가 로드되면 언제든 교체됨(오래 유지됨)

🔹 font-display: swap ✅ 가장 많이 사용됨


block period거의 0초
swap period무제한 (폰트 로드되면 교체됨)

📌 장점: FOIT 방지 → 텍스트는 항상 보이고, 폰트는 나중에 교체
⚠️ 단점: 웹 폰트가 나중에 갑자기 바뀌면서 레이아웃 변화 가능


🔹font-display: fallback

block period약 100ms ~ 500ms
swap period약 3초 이하

📌 장점: 빠른 표시와 성능 균형
⚠️ 단점: 웹 폰트가 늦으면 아예 안 바뀔 수 있음


🔹 font-display: optional

block period약 100ms 이하
swap period짧고 조건부 (느리면 아예 폰트 다운로드 안 함)

📌 장점: 성능 최우선. 저사양/저속 환경에서 유리 ⚠️ 단점: 웹 폰트가 전혀 적용되지 않을 수 있음



🧠 정리 요약

block periodswap period폰트 경험
auto~3초길게 가능불확실
block~3초무제한FOIT 위험
swap0초무제한👍 추천
fallback~100-500ms~3초안정적
optional~100ms 또는 0짧고 조건부빠르지만 불확실